# --- Stage 1: Build aplication with Maven ---
# 使用官方的 Maven 镜像，该镜像内置了 JDK 17
FROM maven:3.8-openjdk-17 AS builder

# 设置工作目录
WORKDIR /app

# 复制 pom 文件，利用 Docker 缓存机制，仅在依赖变更时才重新下载
COPY pom.xml .
COPY workload-common/pom.xml ./workload-common/
COPY workload-pojo/pom.xml ./workload-pojo/
COPY workload-server/pom.xml ./workload-server/

# 下载依赖
RUN mvn dependency:go-offline

# 复制所有源代码
COPY . .

# 执行打包命令，跳过测试以加快构建速度
# 这会编译所有模块，并在 workload-server/target/ 生成可执行的 jar 文件
RUN mvn clean package -DskipTests


# --- Stage 2: Create final lightweight image ---
# 使用轻量的 OpenJDK 镜像作为最终运行环境
FROM openjdk:17-slim

# ↓ 新增字体依赖（Debian/Ubuntu 系列）
RUN apt-get update && \
    apt-get install -y --no-install-recommends fontconfig ttf-dejavu && \
    rm -rf /var/lib/apt/lists/*
    
# 设置工作目录
WORKDIR /app

# 从 builder 阶段复制最终构建出的可执行 jar 包
COPY --from=builder /app/workload-server/target/*.jar app.jar

# 暴露 Spring Boot 应用的默认端口
EXPOSE 8080

# 容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "app.jar"]
